package tk.mynoteapp.dev.other.eliminateifelse.wrong.demo01;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class PayService {
    @Autowired
    private AliPay aliPay;
    @Autowired
    private WeixinPay weixinPay;
    @Autowired
    private JingDongPay jingDongPay;

    /**
     * 试想一下，如果支付方式越来越多，比如：又加了百度支付、美团支付、银联支付等等，就需要改toPay方法的代码，
     * 增加新的else...if判断，判断多了就会导致逻辑越来越多？很明显，这里违法了设计模式六大原则的：开闭原则 和 单一职责原则。
     * 开闭原则：对扩展开放，对修改关闭。就是说增加新功能要尽量少改动已有代码。
     * 单一职责原则：顾名思义，要求逻辑尽量单一，不要太复杂，便于复用。
     * @param code
     */
    public void toPay(String code) {
        if ("ali".equals(code)) {
            aliPay.pay();
        } else if ("weixin".equals(code)) {
            weixinPay.pay();
        } else if ("jingdong".equals(code)) {
            jingDongPay.pay();
        } else {
            throw new RuntimeException("未找到支付方式");
        }
    }
}
